package chapter05

object Test11_ControlAbstraction {

  def main(args: Array[String]): Unit = {
      // 传值参数
      def f1(a: Int):Int = {
          1
      }
      // 传名参数,和以前的匿名函数不同
      /*
      * 传值参数，会传递一个具体的值，可能是1 2 3
      * 对于传名参数，只需要告诉这个函数
      * 我会给你返回一个Int类型的结果，你不需要关系
      * 参数列表，和名字，你只需要知道你会得到一个
      * Int类型结果就行
      * */
      def f2(a: => Int):Unit = {
        // 这里的a，如果是一个函数
        // 那么a调用了多少次，a就会执行多少次
        // 只是把a的代码传入了进去
        println(a)
      }

      f2(2)
      f2(f1(2))
      f2({
        println(1)
        1
      })
  }

}
